# 编写一个Python程序，来计算给定文本中每个单词出现的次数。
from audioop import avgpp
from itertools import count


# text = """
# Python is a popular programming language. It is widely used for web development, data science, and more.
# Python has a simple and readable syntax, which makes it great for beginners.
# """
# words = text.lower().split()
# counts = {}
# for word in words:
#     if word in counts:
#         counts[word] += 1
#     else:
#         counts[word] = 1
# for word,count in counts.items():
#     print(f"{word}:{count}")

# 图案1正方形如下：
# for i in range(5):
#     for j in range(5):
#         print("*",end="  ")
#     print()
# 图案2直角三角形如下：
# for i in range(5):
#     for j in range(i+1):
#         print("*",end="  ")
#     print()
# 图案3倒立直角三角形如下：
# for i in range(5,0,-1):
#     for j in range(i):
#         print("*",end="  ")
#     print()
# 图案4等腰三角形如下：
# for i in range(5,0,-1):
#     for j in range(5 - i):
#         print(" ",end="  ")
#     for j in range(2 * i - 1):
#         print("*",end="  ")
#     print()

# 编写一个Python程序，使用for循环，生成并输出斐波那契数列的前n项，其中n是用户指定的正整数。斐波那契数列，又称黄金分割数列，指的是：1、1、2、3、5、8、13、21、34....从第三个数开始，每个数字都是前两个数字之和。
# n = int(input("正整数："))
# fib = [1,1]
# for i in range(2,n):
#     num = fib[i-1]+fib[i-2]
#     fib.append(num)
# print(f"第{n}项是{num}")

# 对数字列表中数字的求和，求平均值，求最大值，求最小值
# def case_1():
#     numbers = [12, 34, 3, 6, 56, 33434, 6, 3, 23, 23, 23, 57, 78, 11, 1, 8, 9]
#     sum = 0
#     avg = None
#     max = numbers[0]
#     min = numbers[0]
#     for n in numbers:
#         sum += n
#         if n > max:
#             max = n
#         if n < min:
#             min = n
#     avg = sum / len(numbers)
#     print("和",sum)
#     print("最大",max)
#     print("最小",min)
#     print("平均",avg)
# print(case_1())
# 从键盘输入一个字符序列，统计，大写字母，小写字母，数字，其它字符各出现次数，将次数保存到字典中。
# def func2():
#     data = input("请输入数据：")
#     count = {
#         "DX":0,
#         "XX":0,
#         "SZ":0,
#         "QT":0
#     }
#
#     data  = list(data)
#     print(data)
#
#     for c in data:
#         if c >= '0' and c <= '9':
#             count["SZ"] += 1
#         elif c >= 'A' and c <= 'Z':
#             count["DX"] += 1
#         elif c >= 'a' and c <= 'z':
#             count["XX"] += 1
#         else:
#             count["QT"] += 1
#
#     print(count)
# 编写一个Python程序，实选择速排序。
# data = [5, 4, 3, 2, 1]
# len = len(data)
# for i in range(len - 1):
#     s = data[i]
#     for j in range(i + 1,len):
#         if data[j] < s:
#             idx = j
#             data[idx], data[i] = data[i], data[idx]
# print(data)

# 编写一个 Python 程序，输出所有由数字1、2、3、4 组成的互不相同且无重复数字的三位数。即个位，十位，百位互不相同且无重复数字。
# for i in range(1,5):
#     for j in range(1,5):
#         for k in range(1,5):
#             if (i!=k) and (i!=j) and (j!=k):
#                 print(i,j,k)

# 编写一个 Python 程序，实现一个猜数字的游戏。程序随机生成一个1-100目标数字，在一定的范围内，玩家需要根据提示猜测目标数字，直到猜中为止。游戏会根据玩家的猜测给出提示，告诉玩家猜的数字是大了还是小了，最终告诉玩家猜对了，并显示猜测次数。
# import random
#
# count = 0
# a = random.randint(1, 100)
# while True:
#     count += 1
#     num = int(input("请输入数字:"))
#     if num < a:
#         print("小了")
#     elif num > a:
#         print("大了")
#     else:
#         print("猜对了")
#         break
# print(f'猜了{count}次')

# 编写一个Python程序，实现一个简单的字典。
# def func3():
#     txt = '''#a
#     Trans:art. 一;字母A
#     #a.m.
#     Trans:n. 上午
#     #a/c
#     Trans:n. 往来帐户@往来:come - and - go; contact; intercourse@n. 往来帐户
#     #aardvark
#     Trans:n. 土猪
#     #aardwolf
#     Trans:n. 土狼
#     #aasvogel
#     Trans:n. 秃鹰之一种
#     #abaci
#     Trans:n. 算盘
#     #aback
#     Trans:ad. 向后地;朝后地
#     #abacus
#     Trans:n. 算盘
#     #abaft
#     Trans:ad. 向船尾@prep. 在...后
#     #abalone
#     Trans:n. 鲍鱼
#     #abandon
#     Trans:vt. 放弃;沉溺@n. 放任
#     #abandoned
#     Trans:a. 被抛弃的;自弃的;自甘堕落的
#     #abandonee
#     Trans:n. 被遗弃者;被委付者
#     #abandoner
#     Trans:n. 遗弃者;委付者
#     #abandonment
#     Trans:n. 放弃;自暴自弃;放纵
#     #abas
#     Trans:vt. 打倒
#     #abase
#     Trans:vt. 降低...的地位;降低...的品格;贬抑
#     #abasement
#     Trans:n. 贬抑;屈辱;谦卑
#     #abash
#     Trans:vt. 使...羞愧;使困窘
#     #abashment
#     Trans:n. 羞愧;
#     #abate
#     Trans:vt. 缓和;减弱;减少;废除@vi. 缓和;减弱;减少
#     #abatement
#     Trans:n. 减少;减轻;缓和
#     #abatis
#     Trans:n. 鹿柴;拒木;铁丝网
#     #abatment
#     Trans:n. 消除，减除
#     #abb
#     Trans:n. 横丝;纬;羊毛
#     #abbacy
#     Trans:n. 大修道院院长之职位;管区;任期
#     #abbatial
#     Trans:a. 大修道院的;大修道院长的;女大修道院长的
#     #abbe
#     Trans:n. 大修道院院长;僧侣;神父
#     #abbess
#     Trans:n. 女修道院院长;女庵主持
#     #abbey
#     Trans:n. 修道院
#     #abbot
#     Trans:n. 修道院院长;方丈;住持
#     #abbreviate
#     Trans:vt. 缩写;使...简略;缩短
#     #abbreviation
#     Trans:n. 缩写
#     #abbreviator
#     Trans:n. 缩写者
#     #abc
#     Trans:n. 基础知识;美国广播公司;澳大利亚广播公司
#     #abcoulomb
#     Trans:n. 绝对库伦
#     #abdicate
#     Trans:vt. 放弃@vi. 逊位
#     #abdication
#     Trans:n. 逊位;弃权;辞职
#     #abdicator
#     Trans:n. 放弃者;让位者
#     #abdomen
#     Trans:n. 腹部
#     #abdominal
#     Trans:a. 腹部的;腹式呼吸;开腹手术
#     #abduct
#     Trans:vt. 诱拐;绑走
#     #abduction
#     Trans:n. 诱拐
#     #abductor
#     Trans:n. 诱拐者
#     #abe
#     Trans:n. 亚伯;Abraham 的昵称
#     #abeam
#     Trans:ad. 与船的龙骨成直角
#     #abecedarian
#     Trans:n. 初学者@a. 字母的;初步的
#     #abed
#     Trans:ad. 在床上
#     #abelmosk
#     Trans:n. 秋葵
#     #aberrance
#     Trans:n. 脱离正道;越轨;脱离常轨
#     #aberrant
#     Trans:a. 脱离正道的;脱离常轨的;变体的
#     #aberration
#     Trans:n. 越轨;光行差;心理失常;色差
#     #abestrine
#     Trans:adj. 石棉的
#     #abet
#     Trans:vt. 教唆;帮助'''
#
#     data = txt.split("\n    #")
#     myDict = {}
#     for item in data:
#         # 处理第一个单词字符串
#         if item.startswith("#"):
#             item = item[1:]
#         # 拆分单词项
#         k, w = item.split("\n    Trans:")
#         myDict[k] = w
#
#     inw = input("请输入一个单词：")
#     if  inw in myDict:
#         trans = myDict[inw]
#         print(trans)
#     else:
#         print("输入的单词不存在")

# 输入任意数字求和，求平均值，求最大值，求最小值,直到输入bye结束，计算数字不考虑浮点数。
# import sys
#
# count = 0
# sum = 0
# max = -(sys.maxsize - 1)
# min = sys.maxsize
# avg = 0
# while True:
#     inp = input("输入数字:")
#     if inp == 'bye':
#         break
#     else:
#         count += 1
#         num = int(inp)
#         sum += num
#         avg += num
#         if num > max:
#             max = num
#         if num < min:
#             min = num
# avg /= count
# print(sum)
# print(avg)
# print(max)
# print(min)

# 编写一个Python程序，输入一个5位数，判断输入的这个数字是否为回文数。回文数是指从左到右和从右到左读都一样的数。例如12321。如果输入的是回文数，输出是回文数，否则输出不是回文数。（使用循环进行实现
# nums = input()
# lis = []
# i = 0
# for num in nums:
#     lis.append(num)
# if lis[0] == lis[4] and lis[1] == lis[3]:
#     print("回文")
# else:
#     print("非回文")